package leetcode;

/**
 * description:给你一个下标从 0 开始的整数数组 nums ，其长度是 2 的幂。
 * 对 nums 执行下述算法：
 * 设 n 等于 nums 的长度，如果 n == 1 ，终止 算法过程。否则，创建 一个新的整数数组newNums ，新数组长度为 n / 2 ，下标从 0 开始。
 * 对于满足0 <= i < n / 2 的每个 偶数 下标 i ，将 newNums[i] 赋值 为 min(nums[2 * i], nums[2 * i + 1]) 。
 * 对于满足0 <= i < n / 2 的每个 奇数 下标 i ，将 newNums[i] 赋值 为 max(nums[2 * i], nums[2 * i + 1]) 。
 * 用 newNums 替换 nums 。
 * 从步骤 1 开始 重复 整个过程。
 * 执行算法后，返回 nums 中剩下的那个数字。
 * author:zt
 * date:2022-06-08
 */
public class leetcode2293 {
    public static void main(String[] args) {
        System.out.println(new leetcode2293().minMaxGame(new int[]{1, 3, 5, 2, 4, 8, 2, 2}));
    }
    public int minMaxGame(int[] nums) {
        if(nums.length == 1) return nums[0];
        boolean min = true;
        int[] newNums = new int[nums.length/2];
        for(int i = 0;i < nums.length/2;i ++){
            if (min)    newNums[i] = Math.min(nums[2*i],nums[2*i+1]);
            else    newNums[i] = Math.max(nums[2*i],nums[2*i+1]);

            min = !min;
        }
        return minMaxGame(newNums);
    }
}
